<?php

namespace Inscripcion\Controller\Service;

use Inscripcion\Controller\Service\GenericService;
use Inscripcion\Model\Entity\MetodologiaInscripcion;
use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Inscripcion\Model\Dao\MetodologiaInscripcionDAO;

class MetodologiaInscripcionService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $metodologiaInscripcionService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    /**
     * 
     * @param type $adapter
     * @return Instancia de MetodologiaInscripcionService
     * Patron singleton
     */
    public static function getInstance($adapter) {
        if (self::$metodologiaInscripcionService == null) {
            self::$metodologiaInscripcionService = new MetodologiaInscripcionService($adapter);
        }
        return self::$metodologiaInscripcionService;
    }

    public function getMetodologiaInscripcionDao() {
        return MetodologiaInscripcionDAO::getInstance($this->dbAdapter);
    }

    public function getRegistro($id) {
        $data = null;
        $success = false;
        $metodologiaInscripcion = $this->obtenerMetodologiaInscripcionSegunId($id);
        if ($metodologiaInscripcion->getId() != null) {
            $data[0] = $metodologiaInscripcion->objectToArray();
            $success = true;
        }
        return UtilsArrayController::organizarOutput($success, $data, null);
    }

//------Retornan los objetos-------

    /**
     * Dado el id de la metodologiaInscripcion de inscripcion se trae el registro
     * asociado de la tabla metodologiaInscripcion_inscripcion
     * convirtiendolo primero en un objeto, luego lo retorna
     * @param $id type int
     * @return Objeto MetodologiaInscripcion
     */
    public function obtenerMetodologiaInscripcionSegunId($id) {
        $data = $this->obtenerArrayMetodologiaInscripcionSegunId($id);
        $metodologiaInscripcion = new MetodologiaInscripcion($data[0]);
        return $metodologiaInscripcion;
    }

//-----------------------------------

    public function obtenerArrayMetodologiaInscripcionSegunId($id) {
        $registros = $this->getMetodologiaInscripcionDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        return $data;
    }

}
